跳到主要内容

转换器接口(Converter)

用于在 ViewModel 数据绑定和 Rive 属性之间转换值的脚本化转换器。

类型参数: T:转换器类型 I:输入类型,必须是 DataValue 类型 (DataValueNumber、DataValueString、DataValueBoolean、DataValueColor 等) O:输出类型,必须是 DataValue 类型 (DataValueNumber、DataValueString、DataValueBoolean、DataValueColor 等)

更多信息请参阅 转换器脚本(Converter Scripts)

方法(Methods)

init

init(self: T, context: Context) -> boolean

转换器创建时调用一次。如果初始化成功则返回 true。

-- 脚本初始化时调用一次。
function init(self: MyConverter, context: Context): boolean

-- 返回 false 以停止脚本。
return true
end

convert

convert(self: T, input: I) -> O

将输入值(ViewModel 属性)转换为输出值。 输入参数必须是 DataValue 类型。

-- 在从源到目标的绑定时转换值。
function convert(self: MyConverter, input: DataInputs): DataOutput

local dv: DataValueNumber = DataValue.number()
if input:isNumber() then
-- 示例:将传入数值加 1
dv.value = (input :: DataValueNumber).value + 1
end
return dv
end

reverseConvert

reverseConvert(self: T, input: O) -> I

将输出值反向转换为输入值(ViewModel 属性)。 输入参数必须是 DataValue 类型。

function reverseConvert(
self: MyConverter,
input: DataOutput
): DataInputs
local dv: DataValueNumber = DataValue.number()
if input:isNumber() then
-- 示例:将目标数值减 1
dv.value = (input :: DataValueNumber).value - 1
end
return dv
end

advance

advance(self: T, seconds: number) -> boolean

可选的每帧更新。如果转换器应继续接收 advance 调用则返回 true。

function advance(self: MyConverter, seconds: number): boolean
return false
end